﻿using System;
using System.Windows;
using System.Windows.Controls;

namespace ControleRepresentanteSync.View.Pedido
{
    public partial class PedidoListView
    {
        private readonly int m_IndexOfIsCheckedColumn;

        public PedidoListView()
        {
            InitializeComponent();
            m_IndexOfIsCheckedColumn = Columns.Columns.IndexOf(IsCheckedColumn);
        }

        private void UserControlDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            PedidoListViewModel pedidoListViewModel = e.OldValue as PedidoListViewModel;
            if (pedidoListViewModel != null)
            {
                pedidoListViewModel.IsShowIsCheckedColumnChanged -= PedidoListViewModelIsShowIsCheckedColumnChanged;
            }

            pedidoListViewModel = e.NewValue as PedidoListViewModel;
            if (pedidoListViewModel != null)
            {
                pedidoListViewModel.IsShowIsCheckedColumnChanged += PedidoListViewModelIsShowIsCheckedColumnChanged;
            }

            UpdateIsCheckedColumn();
        }

        private void PedidoListViewModelIsShowIsCheckedColumnChanged(object sender, EventArgs e)
        {
            UpdateIsCheckedColumn();
        }

        private void UpdateIsCheckedColumn()
        {
            if (((PedidoListViewModel)DataContext).IsShowIsCheckedColumn)
            {
                if (!Columns.Columns.Contains(IsCheckedColumn))
                {
                    Columns.Columns.Insert(m_IndexOfIsCheckedColumn, IsCheckedColumn);
                }
            }
            else
            {
                Columns.Columns.Remove(IsCheckedColumn);
            }
        }

        private void IsAllCheckedChecked(object sender, RoutedEventArgs e)
        {
            ((PedidoListViewModel)DataContext).IsAllChecked = ((CheckBox)sender).IsChecked == true;
        }
    }
}
